package com.alibaba.citrus.ots.platform.enhance.api;

import com.alibaba.citrus.ots.platform.enhance.dto.api.PermissionRequest;
import com.alibaba.citrus.ots.platform.enhance.dto.api.request.CustomerAddressBatchRequest;
import com.alibaba.citrus.ots.platform.enhance.dto.api.request.CustomerAddressRequest;
import com.alibaba.citrus.ots.platform.enhance.dto.api.request.QueryAddressRequest;
import com.alibaba.citrus.ots.platform.enhance.sdo.CustomerAddressSDO;
import com.alibaba.cz.base.tool.page.PageResult;
import com.alibaba.cz.base.tool.result.Result;
import com.alibaba.lattice2.epoch.meshflow.model.annotation.MeshFlowService;

import java.util.List;

@MeshFlowService(apps = {"bc_ots"}, name = "customerAddressQueryService")
public interface CustomerAddressQueryService {
    /**
     * 查询用户地址详情
     *
     * @param customerAddressRequest
     * @return
     */
    Result<CustomerAddressSDO> queryCustomerAddress(CustomerAddressRequest customerAddressRequest);

    /**
     * 批量查询用户地址
     *
     * @param request
     * @return
     */
    Result<List<CustomerAddressSDO>> batchQueryCustomerAddress(CustomerAddressBatchRequest request);


    /**
     * 分页查询用户地址
     *
     * @param request
     * @return
     */
    Result<PageResult<List<CustomerAddressSDO>>> pageQueryCustomerAddress(QueryAddressRequest request);

    /**
     * 查询地址下拉框（根据收货地址负责人去重）
     *
     * @return
     */
    Result<PageResult<List<CustomerAddressSDO>>> queryPrincipalList();


    /**
     * 查询地址负责人列表
     * @param permissionRequest
     * @return
     */
    Result<PageResult<List<String>>> queryAddressPrincipalList(PermissionRequest permissionRequest);
}
